﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TP2.XNA_Game;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using TP2.Lib;

namespace TP2.XNA_Game.Vistas
{
    [VistaPara(typeof(AvionJugador))]

    public class VistaAlgo42 : Vista
    {

		public override Vector2 GetVector2()
        {
            float x = (float)this.ElementoJuegoAsociado.Posicion[0];
            float y = (float)this.ElementoJuegoAsociado.Posicion[1];
            Vector2 vector = new Vector2(x, y);
            return (vector);
        }

		public override Texture2D GetTexture2D()
        {
            //Podemos agregar logica chequeando la Vida y poner distintas imagenes.
            return (this.Default);
        }

        public VistaAlgo42()
        {
            
        }

        public VistaAlgo42(AvionJugador jugador,GraphicsDeviceManager graphics)
        {
            jugador.Posicion[0] = graphics.PreferredBackBufferWidth/2;
            jugador.Posicion[1] = graphics.PreferredBackBufferHeight;
            this.ElementoJuegoAsociado = (AvionJugador)jugador;
        }
       

        public override void RangosElemento(GraphicsDeviceManager graphics)
        {
            
            if (this.PosicionVista.Y < 0)
            {
                this._posicionVista.Y = 0;
            }
            if (this.PosicionVista.Y > graphics.PreferredBackBufferHeight - this.Default.Height)
            {
                this._posicionVista.Y = graphics.PreferredBackBufferHeight - this.Default.Height;
            }
            if (this.PosicionVista.X < 0)
            {
                this._posicionVista.X = 0;
            }
            if (this.PosicionVista.X > graphics.PreferredBackBufferWidth - this.Default.Width)
            {
                this._posicionVista.X = graphics.PreferredBackBufferWidth - this.Default.Width;
            }
        }

        public void MovimientosJugador(KeyboardState estadoTeclado)
        {
            const int VELOCIDAD_ALGO42 = 4;
            
            if (estadoTeclado.IsKeyDown(Keys.Up))
            {
                this._posicionVista.Y -= VELOCIDAD_ALGO42;
                this.ElementoJuegoAsociado.Posicion[0] = this.PosicionVista.X;
                this.ElementoJuegoAsociado.Posicion[1] = this.PosicionVista.Y;
            }
            if (estadoTeclado.IsKeyDown(Keys.Down))
            {
                this._posicionVista.Y += VELOCIDAD_ALGO42;
                this.ElementoJuegoAsociado.Posicion[0] = this.PosicionVista.X;
                this.ElementoJuegoAsociado.Posicion[1] = this.PosicionVista.Y;
            }
            if (estadoTeclado.IsKeyDown(Keys.Left))
            {
                this._posicionVista.X -= VELOCIDAD_ALGO42;
                this.ElementoJuegoAsociado.Posicion[0] = this.PosicionVista.X;
                this.ElementoJuegoAsociado.Posicion[1] = this.PosicionVista.Y;
            }
            if (estadoTeclado.IsKeyDown(Keys.Right))
            {
                this._posicionVista.X += VELOCIDAD_ALGO42;
                this.ElementoJuegoAsociado.Posicion[0] = this.PosicionVista.X;
                this.ElementoJuegoAsociado.Posicion[1] = this.PosicionVista.Y;
            }
            
        }

        public override void Actualizar()
        {
            this.PosicionVista = ((IVista)this).GetVector2();
        }

    }
}
